﻿using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WeChatBotSDK.Extensions
{
    public static class WeChatBotServiceCollectionExtensions
    {
        /// <summary>
        /// 添加 WeChatBot 服务到依赖注入容器
        /// 使用DaenWxHook.dll手动注入时使用
        /// </summary>
        /// <param name="services">依赖注入服务集合</param>
        /// <param name="baseUrl">例如：http://127.0.0.1:8888</param>
        /// <returns></returns>
        public static IServiceCollection AddWeChatBot(this IServiceCollection services, string baseUrl)
        {
            services.AddSingleton<IWeChatApiService>(new WeChatApiService($"{baseUrl}/wechat/httpapi"));
            return services;
        }
        /// <summary>
        /// 添加千寻 WeChatBot 服务到依赖注入容器
        /// 使用千寻框架注入时使用
        /// </summary>
        /// <param name="services">依赖注入服务集合</param>
        /// <param name="baseUrl">例如：http://127.0.0.1:8888</param>
        /// <returns></returns>
        public static IServiceCollection AddQXWeChatBot(this IServiceCollection services, string baseUrl)
        {
            services.AddSingleton<IQXApiService>(new WeChatApiService($"{baseUrl}/qianxun/httpapi"));
            return services;
        }
        /// <summary>
        /// 配置用于接收微信推送消息的控制器到 MVC 构建器中
        /// </summary>
        /// <param name="mvcBuilder">MVC 构建器</param>
        /// <returns>更新后的 MVC 构建器</returns>
        public static IMvcBuilder AddWeChatMessageHandlers(this IMvcBuilder mvcBuilder)
        {
            // 添加控制器支持，并扫描外部 DLL 的程序集
            mvcBuilder.AddApplicationPart(typeof(WeChatBotSDK.Controllers.WechatCallbackController).Assembly)
                     .AddControllersAsServices(); // 可选：将控制器作为服务注入

            // 在这里可以注册其他依赖项，比如服务类、配置等
            // services.AddSingleton<IMyService, MyService>();

            return mvcBuilder;
        }

    }
}
